home *** CD-ROM | disk | FTP | other *** search
/ Isometric Game Programming with DirectX 7.0 / Isometric Game Programming.iso / source / chapter16 / isohex16_2 / isoscroller.h < prev    next >
C/C++ Source or Header  |  2000-07-27  |  2KB  |  89 lines

  1. ///isoscroller.h
  2. //072500
  3. //ernest s. pazera
  4. //declarations for the cscroller class
  5. #ifndef __ISOSCROLLER_H__
  6. #define __ISOSCROLLER_H__
  7.  
  8. #include <windows.h>
  9. #include "IsoTilePlotter.h"
  10.  
  11. //wrapping modes for anchors
  12. typedef enum
  13. {
  14.     WRAPMODE_NONE,//no clipping of any kind is done to the anchor
  15.     WRAPMODE_CLIP,
  16.     WRAPMODE_WRAP
  17. } SCROLLERWRAPMODE;
  18.  
  19. //world space/screen space management class
  20. class CScroller
  21. {
  22. private:
  23.     //screen space
  24.     RECT rcScreenSpace;
  25.  
  26.     //world space
  27.     RECT rcWorldSpace;
  28.  
  29.     //anchor space
  30.     RECT rcAnchorSpace;
  31.  
  32.     //anchor
  33.     POINT ptScreenAnchor;
  34.  
  35.     //wrapmodes
  36.     SCROLLERWRAPMODE swmHorizontal;
  37.     SCROLLERWRAPMODE swmVertical;
  38. public:
  39.     //constructor
  40.     CScroller();
  41.     //destructor
  42.     ~CScroller();
  43.  
  44.     //screen space
  45.     RECT* GetScreenSpace();
  46.     void SetScreenSpace(RECT* prcNewScreenSpace);
  47.     void AdjustScreenSpace(int iLeftAdjust,int iTopAdjust,int iRightAdjust, int iBottomAdjust);
  48.     int GetScreenSpaceWidth();
  49.     int GetScreenSpaceHeight();
  50.  
  51.     //world space
  52.     RECT* GetWorldSpace();
  53.     void SetWorldSpace(RECT* prcNewWorldSpace);
  54.     void AdjustWorldSpace(int iLeftAdjust,int iTopAdjust,int iRightAdjust, int iBottomAdjust);
  55.     int GetWorldSpaceWidth();
  56.     int GetWorldSpaceHeight();
  57.     void CalcWorldSpace(CTilePlotter* TilePlotter,RECT* prcExtent,int iMapWidth,int iMapHeight);//calculates worldspace based on a tile plotter, a tile extent rectangle, and a map's height and width
  58.  
  59.     //anchor space
  60.     RECT* GetAnchorSpace();
  61.     void SetAnchorSpace(RECT* prcNewAnchorSpace);
  62.     void AdjustAnchorSpace(int iLeftAdjust,int iTopAdjust,int iRightAdjust, int iBottomAdjust);
  63.     int GetAnchorSpaceWidth();
  64.     int GetAnchorSpaceHeight();
  65.     void CalcAnchorSpace();//calculates anchor space based on world space and screen space
  66.  
  67.     //anchor
  68.     POINT* GetAnchor();
  69.     void SetAnchor(POINT* pptNewAnchor,bool bWrap=true);
  70.     void MoveAnchor(int iXAdjust,int iYAdjust,bool bWrap=true);
  71.     void WrapAnchor();//applies clipping or wrapping to anchor
  72.  
  73.     //conversion
  74.     POINT ScreenToWorld(POINT ptScreen);
  75.     POINT WorldToScreen(POINT ptWorld);
  76.  
  77.     //wrap modes
  78.     void SetHWrapMode(SCROLLERWRAPMODE ScrollerWrapMode);
  79.     void SetVWrapMode(SCROLLERWRAPMODE ScrollerWrapMode);
  80.     SCROLLERWRAPMODE GetHWrapMode();
  81.     SCROLLERWRAPMODE GetVWrapMode();
  82.  
  83.     //validation
  84.     bool IsWorldCoord(POINT ptWorld);
  85.     bool IsScreenCoord(POINT ptScreen);
  86.     bool IsAnchorCoord(POINT ptAnchor);
  87. };
  88.  
  89. #endif